
<!--stmop  websocket -->
var stompClient;
$(function($) {
    var socket = new SockJS('/gs-guide-websocket');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function (frame) {
        /*温度*/
        stompClient.subscribe("/topic/temp", function (response) {//订阅一个温度数值，希望把数值回调到前端，显示在页面上
            let temp=response['body'];
            $("#temp").text(temp)           //+27.1
            //1. 温度值超过阈值1时，开启一个风扇；超过2时，开启两个；低于阈值1时，关闭所有风扇
            if(data1!=null&&temp-data1>1){
                if(temp-data1>2){
                    //开启两个风扇
                    if(fan1Status==="off")
                        fengshanOpend();
                    if(fan2Status==="off")
                        open_method2();
                }
            }
            if(data1!=null&&temp-data1<1){
                //关闭两个风扇
                if(fan1Status==="on")
                    fengshanOpend();
                if(fan2Status==="on")
                    open_method2();
            }
        });
        /*湿度*/
        stompClient.subscribe("/topic/hum", function (response) {//
            $("#hum").text(response['body'])
        });
        /*风扇1开关状态*/
        stompClient.subscribe("/topic/fan1", function (response) {//
            $("#fan").text(response['body'])
        });
        //风扇2
        stompClient.subscribe("/topic/fan2", function (response) {//
            $("#fan2").text(response['body'])
        });
        //光照强度
        stompClient.subscribe("/topic/light", function (response) {
            let ill= response['body'];
            $("#ill").text(ill);
            //2. 光照低于预警阈值时，控制步进电机正转，五秒后停止，停止后控制可调灯打开
            //3. 光照高于预警阈值时，控制步进电机反转，五秒后停止，停止后控制可调灯关闭
            if(data3!=null&&ill - data3 < 0){
                open_method3("正转");
                sleep(5000);
                open_method3("关闭");
                if(lightSwitch==="off"){
                    open_method4();
                }
            }
            if(data3!=null&&ill - data3 > 0){
                open_method3("反转");
                sleep(5000);
                open_method3("关闭");
                if(lightSwitch==="on"){
                    open_method4();
                }
            }

        });
        //步进电机
        stompClient.subscribe("/topic/motor", function (response) {//
            $("#dianji").text(response['body'])
        });
        //可调灯
        stompClient.subscribe("/topic/lightSwitch", function (response) {//
            $("#light").text(response['body'])
        });
        //自动控制
        stompClient.subscribe("/topic/auto", function (response) {//
            $("#autoControl").text(response['body'])
        });
    });
});
/*风扇1*/
let fan1Status="off";
function fengshanOpend(){
    fan1Status === "off" ? fan1Status= "on" : fan1Status="off";
    //stompClient.send("/app/fengshanOpen",{},fan1Status);//打开风扇，具体内容 “on"
    $.ajax({
        url: "/fengshanOpen",
        type: "get",
        data: {message:fan1Status}
    })
    $("#fan").text(fan1Status);
}
/*风扇2*/
let fan2Status="off";
function open_method2(){
    fan2Status === "off" ? fan2Status= "on" : fan2Status="off";
    $.ajax({
        url: "/open_method2",
        type: "get",
        data: {message:fan2Status}
    })
    /*发送完请求后改变web端的状态*/
    $("#fan2").text(fan2Status);
}
/*步进电机*/
function open_method3 (status) {
    let open_method3Switch=status;
    $.ajax({
        url: "/open_method3",
        type: "get",
        data: {message:open_method3Switch}
    })
    /*发送完请求后改变web端的状态*/
    $("#dianji").text(open_method3Switch);
}
/*可调灯*/
let lightSwitch="off";
function open_method4(){
    lightSwitch === "off" ? lightSwitch= "on" : lightSwitch="off";
    $.ajax({
        url: "/open_method4",
        type: "get",
        data: {message:lightSwitch}
    })
    /*发送完请求后改变web端的状态*/
    $("#light").text(lightSwitch);
}
/*自动控制按钮*/
let autoSwitch="off";
function open_method5(){
    autoSwitch === "off" ? autoSwitch= "on" : autoSwitch="off";
    $.ajax({
        url: "/open_method5",
        type: "get",
        data: {message:autoSwitch}
    })
    $("#autoControl").text(autoSwitch);
}
/*处理输入框数据*/
let data1=null;//温度阈值一
let data2=null;//温度阈值二
let data3=null;//关照阈值
$(".submitBtn").click(function () {
    /**
     * 检查输入合法性
     * 1. 阀值一要比阈值二小，且温度阈值只能至多两位
     * 2. 光照阈值不能超过六位
     */
     data1=$("input[type=text]:eq(0)").val();
     data2=$("input[type=text]:eq(1)").val();
     data3=$("input[type=text]:eq(2)").val();
    if(data1===""||data2===""||data3===""){
        alert("输入不能为空！");
        return;
    }
    if(data1<data2){
        alert("温度一的阈值不能比阈值二小");
        return;
    }
    let data1Patt=/\d{1,2}/;
    let data2Patt=/\d{1,6}/;
    if(data1Patt.test(data1)||data1Patt.test(data2)||data2Patt.test(data3)){
        alert("输入数据不合法！\n阀值一要比阈值二小，且温度阈值只能至多两位，光照阈值不能超过六位")
    }
    let open_method5Message=data1+"b+"+data2 +"&"+data3
    $.ajax({
        url: "/open_method6",
        type: "get",
        data: {message:open_method5Message}
    })
})


/*等页面加载完后，先向服务器请求一次数据*/
$(function () {
    $.ajax({
        url: "/open_method7",
        type: "get",
        /*因为请求格式固定，所以发空串即可*/
        data: {message:""}
    })
})
/**
 * 由于js是单线程，没有sleep函数，所以用线程堵塞的方式实现
 * 参数n为休眠时间，单位为毫秒
 */
function sleep(n) {
    let start = new Date().getTime();
    //  console.log('休眠前：' + start);
    while (true) {
        if (new Date().getTime() - start > n) {
            break;
        }
    }
    // console.log('休眠后：' + new Date().getTime());
}
